3.6 PE命令文
PE命令文
は 1
ステップ
に実行される
PE命令
に翻訳される単位である。
PE命令文
は、いくつかの
PE命令
式をセミコロンで区切り、改行で終端する形式を持つ。
PE命令
式は、
nop
命令、
noforward
命令、
l2bmdarw
命令、
wait
命令を除き、 1 つの
オペコード
、 0 個以上の
入力オペランド
、 1 個以上の出力
オペランド
が、 1 つ以上の空白文字によって区切られた次のような文法を持つ。
code:txt
<opcode> <in-operand-1> ... <in-operand-k> <out-operand-1>
<out-operand-2> ...
ある式がいくつの
入力オペランド
を持つかは
オペコード
によって決まる。出力
オペランド
は他の制限が許す
かぎり任意の個数を指定できる。
nop
命令、
noforward
命令、
l2bmdarw
命令、
wait
命令は入出力値を持たないので上記の文法にあてはまら
ない。
セミコロン区切りで 1 行に複数の式を列挙することで、翻訳結果のビットフィールドが重ならないなどの条
件のもとで、 1 命令として発行できる。
以下にいくつかの例を示す。
オペコード
、
オペランド
の詳細な文法は後述する。
dvpassa
は
MAU
によりデータのコピーを行う 1
入力オペランド
の命令である。
以下の例では
LM0
(
$lm0v
)から
LM1
(
$ln0v
)にコピーを行う。
code:例 1
dvpassa $lm0v $ln0v
以下は出力オペランドが 2 つある例である。
LM0
から
LM1
と
GRF0
(
$lr0v
)にコピーを行う。
code:例 2
dvpassa $lm0v $ln0v $lr0v
linc
は
ALU
により
倍精度
整数のインクリメントを行う 1
入力オペランド
の命令である。
以下の例では例 2の効果に加え、
Tレジスタ
(
$t
)から読み出したデータを
インクリメント
して
GRF1
(
$ls0v
)に格納する。
code:例 3
dvpassa $lm0v $ln0v $lr0v;linc $t $ls0v
3.6.1 オペランド
3.6.2 マスクレジスタ
3.6.3 ハザードの回避
3.6.4 並列実行条件
3.6.5 nop-NOP
3.6.6 noforward-フォワーディングと折り返しレジスタの更新をしない
3.6.7 L2BM命令式
3.6.8 L1BM命令式
3.6.9 MAU命令式
3.6.10 行列レジスタ書き込み命令式
3.6.11 行列レジスタ読み出し命令式
3.6.12 ALU命令式
3.6.13 wait-PE命令にMV命令を待機させる